﻿Imports ServiciosAT
Imports Utilitarios

Namespace SIREOS
    Public Class ServicioWSR

        Function anularOrdenServicio(oServicio As SireosWSServicio.OrdenServicio) As Boolean
            Dim oServicioWS As New SireosWSServicio.WSServicio

            Dim _anularOrdenServicioRequest As New SireosWSServicio.anularOrdenServicioRequest
            Dim _anularOrdenServicioResponse As New SireosWSServicio.anularOrdenServicioResponse

            _anularOrdenServicioRequest.ordenServicio = oServicio
            _anularOrdenServicioRequest.ordenServicio.codEstadoServicioSpecified = True
            _anularOrdenServicioRequest.ordenServicio.codOrdenSpecified = True
            _anularOrdenServicioRequest.ordenServicio.usuEliminacionSpecified = True

            _anularOrdenServicioResponse = oServicioWS.anularOrdenServicio(_anularOrdenServicioRequest)

            If Not (_anularOrdenServicioResponse.mensajeInformativo.codigoMensaje = 0) Then
                Return True
            Else
                Return False
            End If
        End Function

        Function buscarCliente(oCliente As SireosWSServicio.Cliente) As SireosWSServicio.Cliente
            Dim oServicioWS As New SireosWSServicio.WSServicio

            Dim _buscarClienteRequest As New SireosWSServicio.buscarClienteRequest
            Dim _buscarClienteResponse As New SireosWSServicio.buscarClienteResponse

            _buscarClienteRequest.cliente = oCliente
            _buscarClienteResponse = oServicioWS.buscarCliente(_buscarClienteRequest)

            If Not (_buscarClienteResponse.cliente Is Nothing) Then

                Dim oClienteBE As New SireosWSServicio.Cliente
                oClienteBE.codTipoCLiente = _buscarClienteResponse.cliente.codTipoCLiente
                oClienteBE.codCliente = _buscarClienteResponse.cliente.codCliente
                oCliente.nomCliente = _buscarClienteResponse.cliente.nomCliente
                Return oClienteBE
            Else
                Return Nothing
            End If
        End Function

        Function cargarDatosOrden(oOrden As SireosWSServicio.OrdenServicio) As SireosWSServicio.OrdenServicio
            Dim oServicioWS As New SireosWSServicio.WSServicio

            Dim _cargarDatosOrdenServicioRequest As New SireosWSServicio.cargarDatosOrdenServicioRequest
            Dim _cargarDatosOrdenServicioResponse As New SireosWSServicio.cargarDatosOrdenServicioResponse

            _cargarDatosOrdenServicioRequest.ordenServicio = oOrden
            _cargarDatosOrdenServicioRequest.ordenServicio.codOrdenSpecified = True
            _cargarDatosOrdenServicioResponse = oServicioWS.cargarDatosOrdenServicio(_cargarDatosOrdenServicioRequest)

            If Not (_cargarDatosOrdenServicioResponse.ordenServicio Is Nothing) Then
                Dim oOrdenServicio As New SireosWSServicio.OrdenServicio
                oOrdenServicio.codEstadoServicio = _cargarDatosOrdenServicioResponse.ordenServicio.codEstadoServicio
                oOrdenServicio.modalidadServicio = _cargarDatosOrdenServicioResponse.ordenServicio.modalidadServicio
                oOrdenServicio.categoriaServicio = _cargarDatosOrdenServicioResponse.ordenServicio.categoriaServicio
                oOrdenServicio.fecOrden = _cargarDatosOrdenServicioResponse.ordenServicio.fecOrden
                oOrdenServicio.codPrioridad = _cargarDatosOrdenServicioResponse.ordenServicio.codPrioridad
                oOrdenServicio.tipoServicio = _cargarDatosOrdenServicioResponse.ordenServicio.tipoServicio
                oOrdenServicio.tipoRevision = _cargarDatosOrdenServicioResponse.ordenServicio.tipoRevision
                oOrdenServicio.casoCliente = _cargarDatosOrdenServicioResponse.ordenServicio.casoCliente
                oOrdenServicio.codigoReferencia = _cargarDatosOrdenServicioResponse.ordenServicio.codigoReferencia
                oOrdenServicio.codGarantia = _cargarDatosOrdenServicioResponse.ordenServicio.codGarantia
                oOrdenServicio.codProyecto = _cargarDatosOrdenServicioResponse.ordenServicio.codProyecto
                oOrdenServicio.codVendedor = _cargarDatosOrdenServicioResponse.ordenServicio.codVendedor
                oOrdenServicio.codFalla = _cargarDatosOrdenServicioResponse.ordenServicio.codFalla
                oOrdenServicio.detFalla = _cargarDatosOrdenServicioResponse.ordenServicio.detFalla
                oOrdenServicio.obsOrden = _cargarDatosOrdenServicioResponse.ordenServicio.obsOrden

                oOrdenServicio.codSede = _cargarDatosOrdenServicioResponse.ordenServicio.codSede
                oOrdenServicio.codContactoCliente = _cargarDatosOrdenServicioResponse.ordenServicio.codContactoCliente
                oOrdenServicio.codCourier = _cargarDatosOrdenServicioResponse.ordenServicio.codCourier
                oOrdenServicio.codContactoCourier = _cargarDatosOrdenServicioResponse.ordenServicio.codContactoCourier
                oOrdenServicio.codEquipo = _cargarDatosOrdenServicioResponse.ordenServicio.codEquipo

                Dim oTipoequipo As New SireosWSServicio.TipoEquipo
                oTipoequipo.codFamilia = _cargarDatosOrdenServicioResponse.ordenServicio.equipo.modelo.tipoEquipo.codFamilia
                oTipoequipo.codTipoEquipo = _cargarDatosOrdenServicioResponse.ordenServicio.equipo.modelo.tipoEquipo.codTipoEquipo

                Dim oModelo As New SireosWSServicio.Modelo
                oModelo.tipoEquipo = oTipoequipo
                oModelo.codModelo = _cargarDatosOrdenServicioResponse.ordenServicio.equipo.modelo.codModelo
                oModelo.codTipoEquipo = _cargarDatosOrdenServicioResponse.ordenServicio.equipo.modelo.codTipoEquipo
                oModelo.partNumber = _cargarDatosOrdenServicioResponse.ordenServicio.equipo.modelo.partNumber
                oModelo.codMarca = _cargarDatosOrdenServicioResponse.ordenServicio.equipo.modelo.codMarca

                Dim oEquipo As New SireosWSServicio.Equipo
                oEquipo.modelo = oModelo
                oEquipo.codModelo = _cargarDatosOrdenServicioResponse.ordenServicio.equipo.codModelo
                oEquipo.codEquipo = _cargarDatosOrdenServicioResponse.ordenServicio.equipo.codEquipo
                oEquipo.serEquipo = _cargarDatosOrdenServicioResponse.ordenServicio.equipo.serEquipo
                oEquipo.robEquipo = _cargarDatosOrdenServicioResponse.ordenServicio.equipo.robEquipo

                oOrdenServicio.equipo = oEquipo

                Dim oCliente As New SireosWSServicio.Cliente
                oCliente.codCliente = _cargarDatosOrdenServicioResponse.ordenServicio.sede.cliente.codCliente
                oCliente.codTipoCLiente = _cargarDatosOrdenServicioResponse.ordenServicio.sede.cliente.codTipoCLiente
                oCliente.nroDocumento = _cargarDatosOrdenServicioResponse.ordenServicio.sede.cliente.nroDocumento
                oCliente.nomCliente = _cargarDatosOrdenServicioResponse.ordenServicio.sede.cliente.nomCliente
                oCliente.apeCliente = _cargarDatosOrdenServicioResponse.ordenServicio.sede.cliente.apeCliente
                oCliente.razonSocial = _cargarDatosOrdenServicioResponse.ordenServicio.sede.cliente.razonSocial

                Dim oUbigeo As New SireosWSServicio.Ubigeo
                oUbigeo.dscUbigeo = _cargarDatosOrdenServicioResponse.ordenServicio.sede.ubigeo.dscUbigeo

                Dim oSede As New SireosWSServicio.Sede
                oSede.cliente = oCliente
                oSede.codCliente = _cargarDatosOrdenServicioResponse.ordenServicio.sede.codCliente
                oSede.dirSede = _cargarDatosOrdenServicioResponse.ordenServicio.sede.dirSede
                oSede.ubigeo = oUbigeo
                oOrdenServicio.sede = oSede

                Dim oEstado As New SireosWSServicio.Estado
                oEstado.dscEstado = _cargarDatosOrdenServicioResponse.ordenServicio.estadoServicio.estado.dscEstado

                Dim oEstadoServicio As New SireosWSServicio.EstadoServicio
                oEstadoServicio.estado = oEstado

                oOrdenServicio.estadoServicio = oEstadoServicio

                Return oOrdenServicio
            Else
                Return Nothing
            End If
        End Function

        Function listarOrdenesServicios(oServicio As SireosWSServicio.OrdenServicio, ini As String, fin As String) As DataTable
            Dim oServicioSW As New SireosWSServicio.WSServicio

            Dim _listarOrdenesRequest As New SireosWSServicio.listarOrdenesRequest
            Dim _listarOrdenesResponse As New SireosWSServicio.listarOrdenesResponse

            _listarOrdenesRequest.ordenServicio = oServicio
            _listarOrdenesRequest.ordenServicio.modalidadServicioSpecified = True
            _listarOrdenesRequest.ordenServicio.categoriaServicioSpecified = True
            _listarOrdenesRequest.ordenServicio.tipoServicioSpecified = True
            _listarOrdenesRequest.ordenServicio.equipo.modelo.codMarcaSpecified = True
            _listarOrdenesRequest.fechaInicio = ini
            _listarOrdenesRequest.fechaTermino = fin
            _listarOrdenesResponse = oServicioSW.listarOrdenes(_listarOrdenesRequest)

            If Not (_listarOrdenesResponse.listaObjetoNegocio.ordenServicio Is Nothing) Then
                Dim tot As Integer = _listarOrdenesResponse.listaObjetoNegocio.ordenServicio.Count

                Dim dt As New DataTable
                dt.Columns.Add("CodOrden")
                dt.Columns.Add("Fecha")
                dt.Columns.Add("Caso")
                dt.Columns.Add("Cliente")
                dt.Columns.Add("Equipo")
                dt.Columns.Add("Serie")
                dt.Columns.Add("Tecnico")
                dt.Columns.Add("Estado")

                For i As Integer = 0 To tot - 1
                    dt.Rows.Add(_listarOrdenesResponse.listaObjetoNegocio.ordenServicio.ElementAt(i).codOrden, _
                                _listarOrdenesResponse.listaObjetoNegocio.ordenServicio.ElementAt(i).fecOrden, _
                                _listarOrdenesResponse.listaObjetoNegocio.ordenServicio.ElementAt(i).casoCliente, _
                                _listarOrdenesResponse.listaObjetoNegocio.ordenServicio.ElementAt(i).sede.cliente.nomCliente, _
                    _listarOrdenesResponse.listaObjetoNegocio.ordenServicio.ElementAt(i).equipo.modelo.dscModelo, _
                    _listarOrdenesResponse.listaObjetoNegocio.ordenServicio.ElementAt(i).equipo.serEquipo, _
                    _listarOrdenesResponse.listaObjetoNegocio.ordenServicio.ElementAt(i).ordenServicioAtencion.empleado.nomEmpleado, _
                    _listarOrdenesResponse.listaObjetoNegocio.ordenServicio.ElementAt(i).estadoServicio.estado.dscEstado
                        )
                Next
                Return dt
            Else
                Return Nothing
            End If
        End Function

        Function registrarOrdenServicio(oServicio As SireosWSServicio.OrdenServicio) As Integer
            Dim oServicioWS As New SireosWSServicio.WSServicio

            Dim _registrarOrdenRequest As New SireosWSServicio.registrarOrdenRequest
            Dim _registrarOrdenResponse As New SireosWSServicio.registrarOrdenResponse

            _registrarOrdenRequest.ordenServicio = oServicio

            _registrarOrdenRequest.ordenServicio.estadoServicio.codUbicacionSpecified = True
            _registrarOrdenRequest.ordenServicio.estadoServicio.codEstadoSpecified = True
            _registrarOrdenRequest.ordenServicio.codPrioridadSpecified = True
            _registrarOrdenRequest.ordenServicio.codSedeSpecified = True
            _registrarOrdenRequest.ordenServicio.codContactoClienteSpecified = True
            _registrarOrdenRequest.ordenServicio.codCourierSpecified = True
            _registrarOrdenRequest.ordenServicio.codContactoCourierSpecified = True
            _registrarOrdenRequest.ordenServicio.codEquipoSpecified = True
            _registrarOrdenRequest.ordenServicio.codFallaSpecified = True
            _registrarOrdenRequest.ordenServicio.codGarantiaSpecified = True
            _registrarOrdenRequest.ordenServicio.codProyectoSpecified = True
            _registrarOrdenRequest.ordenServicio.codVendedorSpecified = True
            _registrarOrdenRequest.ordenServicio.cabCategoriaServicioSpecified = True
            _registrarOrdenRequest.ordenServicio.categoriaServicioSpecified = True
            _registrarOrdenRequest.ordenServicio.cabModalidadServicioSpecified = True
            _registrarOrdenRequest.ordenServicio.modalidadServicioSpecified = True
            _registrarOrdenRequest.ordenServicio.cabTipoRevisionSpecified = True
            _registrarOrdenRequest.ordenServicio.tipoRevisionSpecified = True
            _registrarOrdenRequest.ordenServicio.cabTipoServicioSpecified = True
            _registrarOrdenRequest.ordenServicio.tipoServicioSpecified = True
            _registrarOrdenRequest.ordenServicio.usuRegistroSpecified = True

            _registrarOrdenResponse = oServicioWS.registrarOrden(_registrarOrdenRequest)
            Return _registrarOrdenResponse.mensajeInformativo.codigoOrdenServicio
            
        End Function

        Function modificarOrdenServicio(oServicio As SireosWSServicio.OrdenServicio) As SireosWSServicio.MensajeInformativo
            Dim oServicioWS As New SireosWSServicio.WSServicio

            Dim _modificarOrdenRequest As New SireosWSServicio.modificarOrdenRequest
            Dim _modificarOrdenResponse As New SireosWSServicio.modificarOrdenResponse

            _modificarOrdenRequest.ordenServicio = oServicio

            _modificarOrdenRequest.ordenServicio.estadoServicio.codUbicacionSpecified = True
            _modificarOrdenRequest.ordenServicio.estadoServicio.codEstadoSpecified = True
            _modificarOrdenRequest.ordenServicio.codPrioridadSpecified = True
            _modificarOrdenRequest.ordenServicio.codSedeSpecified = True
            _modificarOrdenRequest.ordenServicio.codContactoClienteSpecified = True
            _modificarOrdenRequest.ordenServicio.codCourierSpecified = True
            _modificarOrdenRequest.ordenServicio.codContactoCourierSpecified = True
            _modificarOrdenRequest.ordenServicio.codEquipoSpecified = True
            _modificarOrdenRequest.ordenServicio.codFallaSpecified = True
            _modificarOrdenRequest.ordenServicio.codGarantiaSpecified = True
            _modificarOrdenRequest.ordenServicio.codProyectoSpecified = True
            _modificarOrdenRequest.ordenServicio.codVendedorSpecified = True
            _modificarOrdenRequest.ordenServicio.categoriaServicioSpecified = True
            _modificarOrdenRequest.ordenServicio.modalidadServicioSpecified = True
            _modificarOrdenRequest.ordenServicio.tipoRevisionSpecified = True
            _modificarOrdenRequest.ordenServicio.tipoServicioSpecified = True
            _modificarOrdenRequest.ordenServicio.codOrdenSpecified = True

            _modificarOrdenResponse = oServicioWS.modificarOrden(_modificarOrdenRequest)

            If Not (_modificarOrdenResponse.mensajeInformativo Is Nothing) Then
                Return _modificarOrdenResponse.mensajeInformativo
            Else
                Return Nothing
            End If

        End Function

        Function registrarNotaServicio(oNota As SireosWSServicio.OrdenServicioNota) As SireosWSServicio.MensajeInformativo
            Dim oServicioWS As New SireosWSServicio.WSServicio

            Dim _registrarNotaRequest As New SireosWSServicio.registrarNotaRequest
            Dim _registrarNotaResponse As New SireosWSServicio.registrarNotaResponse

            _registrarNotaRequest.ordenServicioNota = oNota
            _registrarNotaRequest.ordenServicioNota.codOrdenSpecified = True
            _registrarNotaRequest.ordenServicioNota.usuRegistroSpecified = True

            _registrarNotaResponse = oServicioWS.registrarNota(_registrarNotaRequest)

            Return _registrarNotaResponse.mensajeInformativo

        End Function

        Function listarNotaServicio(oNota As SireosWSServicio.OrdenServicioNota) As DataTable
            Dim oServicioSW As New SireosWSServicio.WSServicio

            Dim _listarNotasRequest As New SireosWSServicio.listarNotasRequest
            Dim _listarNotasResponse As New SireosWSServicio.listarNotasResponse

            _listarNotasRequest.ordenServicioNota = oNota
            _listarNotasRequest.ordenServicioNota.codOrdenSpecified = True

            _listarNotasResponse = oServicioSW.listarNotas(_listarNotasRequest)

            If Not (_listarNotasResponse.listaObjetoNegocio.ordenServicioNota Is Nothing) Then
                Dim tot As Integer = _listarNotasResponse.listaObjetoNegocio.ordenServicioNota.Count

                Dim dt As New DataTable
                dt.Columns.Add("CodNota")
                dt.Columns.Add("Fecha")
                dt.Columns.Add("AsuNota")
                dt.Columns.Add("DetalleNota")
                dt.Columns.Add("Empleado")

                For i As Integer = 0 To tot - 1
                    dt.Rows.Add(_listarNotasResponse.listaObjetoNegocio.ordenServicioNota.ElementAt(i).codNota, _
                                _listarNotasResponse.listaObjetoNegocio.ordenServicioNota.ElementAt(i).fecRegistro, _
                                _listarNotasResponse.listaObjetoNegocio.ordenServicioNota.ElementAt(i).asuNota, _
                                _listarNotasResponse.listaObjetoNegocio.ordenServicioNota.ElementAt(i).detalleNota, _
                                _listarNotasResponse.listaObjetoNegocio.ordenServicioNota.ElementAt(i).usuario.empleado.nomEmpleado)
                Next
                Return dt
            Else
                Return Nothing
            End If
        End Function

    End Class
End Namespace